.text

.globl  aesni_xts_avx512_eligible
.type   aesni_xts_avx512_eligible,@function
.align  32
aesni_xts_avx512_eligible:
        movl    OPENSSL_ia32cap_P+8(%rip),%ecx
        xorl    %eax,%eax

        andl    $0xc0030000,%ecx
        cmpl    $0xc0030000,%ecx
        jne     .L_done
        movl    OPENSSL_ia32cap_P+12(%rip),%ecx

        andl    $0x640,%ecx
        cmpl    $0x640,%ecx
        cmovel  %ecx,%eax
.L_done:
        .byte   0xf3,0xc3
.size   aesni_xts_avx512_eligible, .-aesni_xts_avx512_eligible
.globl  aesni_xts_128_encrypt_avx512
.hidden aesni_xts_128_encrypt_avx512
.type   aesni_xts_128_encrypt_avx512,@function
.align  32
aesni_xts_128_encrypt_avx512:
.cfi_startproc
.byte   243,15,30,250
        pushq   %rbp
        movq    %rsp,%rbp
        subq    $136,%rsp
        andq    $0xffffffffffffffc0,%rsp
        movq    %rbx,128(%rsp)
        movq    $0x87,%r10
        vmovdqu (%r9),%xmm1
        vpxor   (%r8),%xmm1,%xmm1
        vaesenc 16(%r8),%xmm1,%xmm1
        vaesenc 32(%r8),%xmm1,%xmm1
        vaesenc 48(%r8),%xmm1,%xmm1
        vaesenc 64(%r8),%xmm1,%xmm1
        vaesenc 80(%r8),%xmm1,%xmm1
        vaesenc 96(%r8),%xmm1,%xmm1
        vaesenc 112(%r8),%xmm1,%xmm1
        vaesenc 128(%r8),%xmm1,%xmm1
        vaesenc 144(%r8),%xmm1,%xmm1
        vaesenclast     160(%r8),%xmm1,%xmm1
        vmovdqa %xmm1,(%rsp)

        cmpq    $0x80,%rdx
        jl      .L_less_than_128_bytes_hEgxyDlCngwrfFe
        vpbroadcastq    %r10,%zmm25
        cmpq    $0x100,%rdx
        jge     .L_start_by16_hEgxyDlCngwrfFe
        cmpq    $0x80,%rdx
        jge     .L_start_by8_hEgxyDlCngwrfFe

.L_do_n_blocks_hEgxyDlCngwrfFe:
        cmpq    $0x0,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        cmpq    $0x70,%rdx
        jge     .L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe
        cmpq    $0x60,%rdx
        jge     .L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe
        cmpq    $0x50,%rdx
        jge     .L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe
        cmpq    $0x40,%rdx
        jge     .L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe
        cmpq    $0x30,%rdx
        jge     .L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe
        cmpq    $0x20,%rdx
        jge     .L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe
        cmpq    $0x10,%rdx
        jge     .L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe
        vmovdqa %xmm0,%xmm8
        vmovdqa %xmm9,%xmm0
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe

.L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe:
        movq    $0x0000ffffffffffff,%r8
        kmovq   %r8,%k1
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2{%k1}
        addq    $0x70,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi){%k1}
        addq    $0x70,%rsi
        vextracti32x4   $0x2,%zmm2,%xmm8
        vextracti32x4   $0x3,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe

.L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%ymm2
        addq    $0x60,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %ymm2,64(%rsi)
        addq    $0x60,%rsi
        vextracti32x4   $0x1,%zmm2,%xmm8
        vextracti32x4   $0x2,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe

.L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu 64(%rdi),%xmm2
        addq    $0x50,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu %xmm2,64(%rsi)
        addq    $0x50,%rsi
        vmovdqa %xmm2,%xmm8
        vextracti32x4   $0x1,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe

.L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe:
        vmovdqu8        (%rdi),%zmm1
        addq    $0x40,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vpxorq  %zmm9,%zmm1,%zmm1
        vmovdqu8        %zmm1,(%rsi)
        addq    $0x40,%rsi
        vextracti32x4   $0x3,%zmm1,%xmm8
        vmovdqa64       %xmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe:
        movq    $-1,%r8
        shrq    $0x10,%r8
        kmovq   %r8,%k1
        vmovdqu8        (%rdi),%zmm1{%k1}
        addq    $0x30,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vpxorq  %zmm9,%zmm1,%zmm1
        vmovdqu8        %zmm1,(%rsi){%k1}
        addq    $0x30,%rsi
        vextracti32x4   $0x2,%zmm1,%xmm8
        vextracti32x4   $0x3,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe:
        vmovdqu8        (%rdi),%ymm1
        addq    $0x20,%rdi
        vbroadcasti32x4 (%rcx),%ymm0
        vpternlogq      $0x96,%ymm0,%ymm9,%ymm1
        vbroadcasti32x4 16(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 32(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 48(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 64(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 80(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 96(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 112(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 128(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 144(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 160(%rcx),%ymm0
        vaesenclast     %ymm0,%ymm1,%ymm1
        vpxorq  %ymm9,%ymm1,%ymm1
        vmovdqu %ymm1,(%rsi)
        addq    $0x20,%rsi
        vextracti32x4   $0x1,%zmm1,%xmm8
        vextracti32x4   $0x2,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe:
        vmovdqu (%rdi),%xmm1
        addq    $0x10,%rdi
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   (%rcx),%xmm1,%xmm1
        vaesenc 16(%rcx),%xmm1,%xmm1
        vaesenc 32(%rcx),%xmm1,%xmm1
        vaesenc 48(%rcx),%xmm1,%xmm1
        vaesenc 64(%rcx),%xmm1,%xmm1
        vaesenc 80(%rcx),%xmm1,%xmm1
        vaesenc 96(%rcx),%xmm1,%xmm1
        vaesenc 112(%rcx),%xmm1,%xmm1
        vaesenc 128(%rcx),%xmm1,%xmm1
        vaesenc 144(%rcx),%xmm1,%xmm1
        vaesenclast     160(%rcx),%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu %xmm1,(%rsi)
        addq    $0x10,%rsi
        vmovdqa %xmm1,%xmm8
        vextracti32x4   $0x1,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe


.L_start_by16_hEgxyDlCngwrfFe:
        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movq    $0xaa,%r8
        kmovq   %r8,%k2
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x0,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x0,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        vpsrldq $0xf,%zmm9,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm9,%zmm11
        vpxord  %zmm14,%zmm11,%zmm11
        vpsrldq $0xf,%zmm10,%zmm15
        vpclmulqdq      $0x0,%zmm25,%zmm15,%zmm16
        vpslldq $0x1,%zmm10,%zmm12
        vpxord  %zmm16,%zmm12,%zmm12

.L_main_loop_run_16_hEgxyDlCngwrfFe:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2
        vmovdqu8        128(%rdi),%zmm3
        vmovdqu8        192(%rdi),%zmm4
        addq    $0x100,%rdi
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vpxorq  %zmm11,%zmm3,%zmm3
        vpxorq  %zmm12,%zmm4,%zmm4
        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vpxorq  %zmm0,%zmm3,%zmm3
        vpxorq  %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm11,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm11,%zmm15
        vpxord  %zmm14,%zmm15,%zmm15
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm12,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm12,%zmm16
        vpxord  %zmm14,%zmm16,%zmm16
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm15,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm15,%zmm17
        vpxord  %zmm14,%zmm17,%zmm17
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm16,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm16,%zmm18
        vpxord  %zmm14,%zmm18,%zmm18
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vaesenclast     %zmm0,%zmm3,%zmm3
        vaesenclast     %zmm0,%zmm4,%zmm4
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vpxorq  %zmm11,%zmm3,%zmm3
        vpxorq  %zmm12,%zmm4,%zmm4

        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqa32       %zmm17,%zmm11
        vmovdqa32       %zmm18,%zmm12
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi)
        vmovdqu8        %zmm3,128(%rsi)
        vmovdqu8        %zmm4,192(%rsi)
        addq    $0x100,%rsi
        subq    $0x100,%rdx
        cmpq    $0x100,%rdx
        jae     .L_main_loop_run_16_hEgxyDlCngwrfFe
        cmpq    $0x80,%rdx
        jae     .L_main_loop_run_8_hEgxyDlCngwrfFe
        vextracti32x4   $0x3,%zmm4,%xmm0
        jmp     .L_do_n_blocks_hEgxyDlCngwrfFe

.L_start_by8_hEgxyDlCngwrfFe:
        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movq    $0xaa,%r8
        kmovq   %r8,%k2
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x0,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x0,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10

.L_main_loop_run_8_hEgxyDlCngwrfFe:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2
        addq    $0x80,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vpsrldq $0xf,%zmm9,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm9,%zmm15
        vpxord  %zmm14,%zmm15,%zmm15
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vpsrldq $0xf,%zmm10,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm10,%zmm16
        vpxord  %zmm14,%zmm16,%zmm16

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi)
        addq    $0x80,%rsi
        subq    $0x80,%rdx
        cmpq    $0x80,%rdx
        jae     .L_main_loop_run_8_hEgxyDlCngwrfFe
        vextracti32x4   $0x3,%zmm2,%xmm0
        jmp     .L_do_n_blocks_hEgxyDlCngwrfFe

.L_steal_cipher_hEgxyDlCngwrfFe:
        vmovdqa %xmm8,%xmm2
        leaq    vpshufb_shf_table(%rip),%rax
        vmovdqu (%rax,%rdx,1),%xmm10
        vpshufb %xmm10,%xmm8,%xmm8
        vmovdqu -16(%rdi,%rdx,1),%xmm3
        vmovdqu %xmm8,-16(%rsi,%rdx,1)
        leaq    vpshufb_shf_table(%rip),%rax
        addq    $16,%rax
        subq    %rdx,%rax
        vmovdqu (%rax),%xmm10
        vpxor   mask1(%rip),%xmm10,%xmm10
        vpshufb %xmm10,%xmm3,%xmm3
        vpblendvb       %xmm10,%xmm2,%xmm3,%xmm3
        vpxor   %xmm0,%xmm3,%xmm8
        vpxor   (%rcx),%xmm8,%xmm8
        vaesenc 16(%rcx),%xmm8,%xmm8
        vaesenc 32(%rcx),%xmm8,%xmm8
        vaesenc 48(%rcx),%xmm8,%xmm8
        vaesenc 64(%rcx),%xmm8,%xmm8
        vaesenc 80(%rcx),%xmm8,%xmm8
        vaesenc 96(%rcx),%xmm8,%xmm8
        vaesenc 112(%rcx),%xmm8,%xmm8
        vaesenc 128(%rcx),%xmm8,%xmm8
        vaesenc 144(%rcx),%xmm8,%xmm8
        vaesenclast     160(%rcx),%xmm8,%xmm8
        vpxor   %xmm0,%xmm8,%xmm8
        vmovdqu %xmm8,-16(%rsi)
.L_ret_hEgxyDlCngwrfFe:
        movq    128(%rsp),%rbx
        xorq    %r8,%r8
        movq    %r8,128(%rsp)

        vpxorq  %zmm0,%zmm0,%zmm0
        movq    %rbp,%rsp
        popq    %rbp
        vzeroupper
        .byte   0xf3,0xc3

.L_less_than_128_bytes_hEgxyDlCngwrfFe:
        vpbroadcastq    %r10,%zmm25
        cmpq    $0x10,%rdx
        jb      .L_ret_hEgxyDlCngwrfFe
        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movl    $0xaa,%r8d
        kmovq   %r8,%k2
        movq    %rdx,%r8
        andq    $0x70,%r8
        cmpq    $0x60,%r8
        je      .L_num_blocks_is_6_hEgxyDlCngwrfFe
        cmpq    $0x50,%r8
        je      .L_num_blocks_is_5_hEgxyDlCngwrfFe
        cmpq    $0x40,%r8
        je      .L_num_blocks_is_4_hEgxyDlCngwrfFe
        cmpq    $0x30,%r8
        je      .L_num_blocks_is_3_hEgxyDlCngwrfFe
        cmpq    $0x20,%r8
        je      .L_num_blocks_is_2_hEgxyDlCngwrfFe
        cmpq    $0x10,%r8
        je      .L_num_blocks_is_1_hEgxyDlCngwrfFe

.L_num_blocks_is_7_hEgxyDlCngwrfFe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x00,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        movq    $0x0000ffffffffffff,%r8
        kmovq   %r8,%k1
        vmovdqu8        0(%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2{%k1}

        addq    $0x70,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,0(%rsi)
        vmovdqu8        %zmm2,64(%rsi){%k1}
        addq    $0x70,%rsi
        vextracti32x4   $0x2,%zmm2,%xmm8
        vextracti32x4   $0x3,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_num_blocks_is_6_hEgxyDlCngwrfFe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x00,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        vmovdqu8        0(%rdi),%zmm1
        vmovdqu8        64(%rdi),%ymm2
        addq    $96,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,0(%rsi)
        vmovdqu8        %ymm2,64(%rsi)
        addq    $96,%rsi

        vextracti32x4   $0x1,%ymm2,%xmm8
        vextracti32x4   $0x2,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_num_blocks_is_5_hEgxyDlCngwrfFe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x00,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        vmovdqu8        0(%rdi),%zmm1
        vmovdqu8        64(%rdi),%xmm2
        addq    $80,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,0(%rsi)
        vmovdqu8        %xmm2,64(%rsi)
        addq    $80,%rsi

        vmovdqa %xmm2,%xmm8
        vextracti32x4   $0x1,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_num_blocks_is_4_hEgxyDlCngwrfFe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x00,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        vmovdqu8        0(%rdi),%zmm1
        addq    $64,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vpxorq  %zmm9,%zmm1,%zmm1
        vmovdqu8        %zmm1,0(%rsi)
        addq    $64,%rsi
        vextracti32x4   $0x3,%zmm1,%xmm8
        vmovdqa %xmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_num_blocks_is_3_hEgxyDlCngwrfFe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        movq    $0x0000ffffffffffff,%r8
        kmovq   %r8,%k1
        vmovdqu8        0(%rdi),%zmm1{%k1}
        addq    $48,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vpxorq  %zmm9,%zmm1,%zmm1
        vmovdqu8        %zmm1,0(%rsi){%k1}
        addq    $48,%rsi
        vextracti32x4   $2,%zmm1,%xmm8
        vextracti32x4   $3,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_num_blocks_is_2_hEgxyDlCngwrfFe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9

        vmovdqu8        0(%rdi),%ymm1
        addq    $32,%rdi
        vbroadcasti32x4 (%rcx),%ymm0
        vpternlogq      $0x96,%ymm0,%ymm9,%ymm1
        vbroadcasti32x4 16(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 32(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 48(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 64(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 80(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 96(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 112(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 128(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 144(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 160(%rcx),%ymm0
        vaesenclast     %ymm0,%ymm1,%ymm1
        vpxorq  %ymm9,%ymm1,%ymm1
        vmovdqu8        %ymm1,0(%rsi)
        addq    $32,%rsi

        vextracti32x4   $1,%ymm1,%xmm8
        vextracti32x4   $2,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.L_num_blocks_is_1_hEgxyDlCngwrfFe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9

        vmovdqu8        0(%rdi),%xmm1
        addq    $16,%rdi
        vbroadcasti32x4 (%rcx),%ymm0
        vpternlogq      $0x96,%ymm0,%ymm9,%ymm1
        vbroadcasti32x4 16(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 32(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 48(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 64(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 80(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 96(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 112(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 128(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 144(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 160(%rcx),%ymm0
        vaesenclast     %ymm0,%ymm1,%ymm1
        vpxorq  %ymm9,%ymm1,%ymm1
        vmovdqu8        %xmm1,0(%rsi)
        addq    $16,%rsi

        vmovdqa %xmm1,%xmm8
        vextracti32x4   $1,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_hEgxyDlCngwrfFe
        jmp     .L_steal_cipher_hEgxyDlCngwrfFe
.cfi_endproc
.globl  aesni_xts_128_decrypt_avx512
.hidden aesni_xts_128_decrypt_avx512
.type   aesni_xts_128_decrypt_avx512,@function
.align  32
aesni_xts_128_decrypt_avx512:
.cfi_startproc
.byte   243,15,30,250
        pushq   %rbp
        movq    %rsp,%rbp
        subq    $136,%rsp
        andq    $0xffffffffffffffc0,%rsp
        movq    %rbx,128(%rsp)
        movq    $0x87,%r10
        vmovdqu (%r9),%xmm1
        vpxor   (%r8),%xmm1,%xmm1
        vaesenc 16(%r8),%xmm1,%xmm1
        vaesenc 32(%r8),%xmm1,%xmm1
        vaesenc 48(%r8),%xmm1,%xmm1
        vaesenc 64(%r8),%xmm1,%xmm1
        vaesenc 80(%r8),%xmm1,%xmm1
        vaesenc 96(%r8),%xmm1,%xmm1
        vaesenc 112(%r8),%xmm1,%xmm1
        vaesenc 128(%r8),%xmm1,%xmm1
        vaesenc 144(%r8),%xmm1,%xmm1
        vaesenclast     160(%r8),%xmm1,%xmm1
        vmovdqa %xmm1,(%rsp)

        cmpq    $0x80,%rdx
        jb      .L_less_than_128_bytes_amivrujEyduiFoi
        vpbroadcastq    %r10,%zmm25
        cmpq    $0x100,%rdx
        jge     .L_start_by16_amivrujEyduiFoi
        jmp     .L_start_by8_amivrujEyduiFoi

.L_do_n_blocks_amivrujEyduiFoi:
        cmpq    $0x0,%rdx
        je      .L_ret_amivrujEyduiFoi
        cmpq    $0x70,%rdx
        jge     .L_remaining_num_blocks_is_7_amivrujEyduiFoi
        cmpq    $0x60,%rdx
        jge     .L_remaining_num_blocks_is_6_amivrujEyduiFoi
        cmpq    $0x50,%rdx
        jge     .L_remaining_num_blocks_is_5_amivrujEyduiFoi
        cmpq    $0x40,%rdx
        jge     .L_remaining_num_blocks_is_4_amivrujEyduiFoi
        cmpq    $0x30,%rdx
        jge     .L_remaining_num_blocks_is_3_amivrujEyduiFoi
        cmpq    $0x20,%rdx
        jge     .L_remaining_num_blocks_is_2_amivrujEyduiFoi
        cmpq    $0x10,%rdx
        jge     .L_remaining_num_blocks_is_1_amivrujEyduiFoi


        vmovdqu %xmm5,%xmm1

        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu %xmm1,-16(%rsi)
        vmovdqa %xmm1,%xmm8


        movq    $0x1,%r8
        kmovq   %r8,%k1
        vpsllq  $0x3f,%xmm9,%xmm13
        vpsraq  $0x3f,%xmm13,%xmm14
        vpandq  %xmm25,%xmm14,%xmm5
        vpxorq  %xmm5,%xmm9,%xmm9{%k1}
        vpsrldq $0x8,%xmm9,%xmm10
.byte   98, 211, 181, 8, 115, 194, 1
        vpslldq $0x8,%xmm13,%xmm13
        vpxorq  %xmm13,%xmm0,%xmm0
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_remaining_num_blocks_is_7_amivrujEyduiFoi:
        movq    $0xffffffffffffffff,%r8
        shrq    $0x10,%r8
        kmovq   %r8,%k1
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2{%k1}
        addq    $0x70,%rdi
        andq    $0xf,%rdx
        je      .L_done_7_remain_amivrujEyduiFoi
        vextracti32x4   $0x2,%zmm10,%xmm12
        vextracti32x4   $0x3,%zmm10,%xmm13
        vinserti32x4    $0x2,%xmm13,%zmm10,%zmm10

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi){%k1}
        addq    $0x70,%rsi
        vextracti32x4   $0x2,%zmm2,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_7_remain_amivrujEyduiFoi:

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi){%k1}
        jmp     .L_ret_amivrujEyduiFoi

.L_remaining_num_blocks_is_6_amivrujEyduiFoi:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%ymm2
        addq    $0x60,%rdi
        andq    $0xf,%rdx
        je      .L_done_6_remain_amivrujEyduiFoi
        vextracti32x4   $0x1,%zmm10,%xmm12
        vextracti32x4   $0x2,%zmm10,%xmm13
        vinserti32x4    $0x1,%xmm13,%zmm10,%zmm10

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %ymm2,64(%rsi)
        addq    $0x60,%rsi
        vextracti32x4   $0x1,%zmm2,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_6_remain_amivrujEyduiFoi:

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %ymm2,64(%rsi)
        jmp     .L_ret_amivrujEyduiFoi

.L_remaining_num_blocks_is_5_amivrujEyduiFoi:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu 64(%rdi),%xmm2
        addq    $0x50,%rdi
        andq    $0xf,%rdx
        je      .L_done_5_remain_amivrujEyduiFoi
        vmovdqa %xmm10,%xmm12
        vextracti32x4   $0x1,%zmm10,%xmm10

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu %xmm2,64(%rsi)
        addq    $0x50,%rsi
        vmovdqa %xmm2,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_5_remain_amivrujEyduiFoi:

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %xmm2,64(%rsi)
        jmp     .L_ret_amivrujEyduiFoi

.L_remaining_num_blocks_is_4_amivrujEyduiFoi:
        vmovdqu8        (%rdi),%zmm1
        addq    $0x40,%rdi
        andq    $0xf,%rdx
        je      .L_done_4_remain_amivrujEyduiFoi
        vextracti32x4   $0x3,%zmm9,%xmm12
        vinserti32x4    $0x3,%xmm10,%zmm9,%zmm9

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        addq    $0x40,%rsi
        vextracti32x4   $0x3,%zmm1,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_4_remain_amivrujEyduiFoi:

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        jmp     .L_ret_amivrujEyduiFoi

.L_remaining_num_blocks_is_3_amivrujEyduiFoi:
        vmovdqu (%rdi),%xmm1
        vmovdqu 16(%rdi),%xmm2
        vmovdqu 32(%rdi),%xmm3
        addq    $0x30,%rdi
        andq    $0xf,%rdx
        je      .L_done_3_remain_amivrujEyduiFoi
        vextracti32x4   $0x2,%zmm9,%xmm13
        vextracti32x4   $0x1,%zmm9,%xmm10
        vextracti32x4   $0x3,%zmm9,%xmm11
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        addq    $0x30,%rsi
        vmovdqa %xmm3,%xmm8
        vmovdqa %xmm13,%xmm0
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_3_remain_amivrujEyduiFoi:
        vextracti32x4   $0x1,%zmm9,%xmm10
        vextracti32x4   $0x2,%zmm9,%xmm11
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        jmp     .L_ret_amivrujEyduiFoi

.L_remaining_num_blocks_is_2_amivrujEyduiFoi:
        vmovdqu (%rdi),%xmm1
        vmovdqu 16(%rdi),%xmm2
        addq    $0x20,%rdi
        andq    $0xf,%rdx
        je      .L_done_2_remain_amivrujEyduiFoi
        vextracti32x4   $0x2,%zmm9,%xmm10
        vextracti32x4   $0x1,%zmm9,%xmm12
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        addq    $0x20,%rsi
        vmovdqa %xmm2,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_2_remain_amivrujEyduiFoi:
        vextracti32x4   $0x1,%zmm9,%xmm10
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        jmp     .L_ret_amivrujEyduiFoi

.L_remaining_num_blocks_is_1_amivrujEyduiFoi:
        vmovdqu (%rdi),%xmm1
        addq    $0x10,%rdi
        andq    $0xf,%rdx
        je      .L_done_1_remain_amivrujEyduiFoi
        vextracti32x4   $0x1,%zmm9,%xmm11
        vpxor   %xmm11,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm11,%xmm1,%xmm1
        vmovdqu %xmm1,(%rsi)
        addq    $0x10,%rsi
        vmovdqa %xmm1,%xmm8
        vmovdqa %xmm9,%xmm0
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_1_remain_amivrujEyduiFoi:
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu %xmm1,(%rsi)
        jmp     .L_ret_amivrujEyduiFoi

.L_start_by16_amivrujEyduiFoi:
        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movq    $0xaa,%r8
        kmovq   %r8,%k2


        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x0,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9


        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x0,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10


        vpsrldq $0xf,%zmm9,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm9,%zmm11
        vpxord  %zmm14,%zmm11,%zmm11

        vpsrldq $0xf,%zmm10,%zmm15
        vpclmulqdq      $0x0,%zmm25,%zmm15,%zmm16
        vpslldq $0x1,%zmm10,%zmm12
        vpxord  %zmm16,%zmm12,%zmm12

.L_main_loop_run_16_amivrujEyduiFoi:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2
        vmovdqu8        128(%rdi),%zmm3
        vmovdqu8        192(%rdi),%zmm4
        vmovdqu8        240(%rdi),%xmm5
        addq    $0x100,%rdi
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vpxorq  %zmm11,%zmm3,%zmm3
        vpxorq  %zmm12,%zmm4,%zmm4
        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vpxorq  %zmm0,%zmm3,%zmm3
        vpxorq  %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm11,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm11,%zmm15
        vpxord  %zmm14,%zmm15,%zmm15
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm12,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm12,%zmm16
        vpxord  %zmm14,%zmm16,%zmm16
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm15,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm15,%zmm17
        vpxord  %zmm14,%zmm17,%zmm17
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm16,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm16,%zmm18
        vpxord  %zmm14,%zmm18,%zmm18
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2
        vaesdeclast     %zmm0,%zmm3,%zmm3
        vaesdeclast     %zmm0,%zmm4,%zmm4
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vpxorq  %zmm11,%zmm3,%zmm3
        vpxorq  %zmm12,%zmm4,%zmm4

        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqa32       %zmm17,%zmm11
        vmovdqa32       %zmm18,%zmm12
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi)
        vmovdqu8        %zmm3,128(%rsi)
        vmovdqu8        %zmm4,192(%rsi)
        addq    $0x100,%rsi
        subq    $0x100,%rdx
        cmpq    $0x100,%rdx
        jge     .L_main_loop_run_16_amivrujEyduiFoi

        cmpq    $0x80,%rdx
        jge     .L_main_loop_run_8_amivrujEyduiFoi
        jmp     .L_do_n_blocks_amivrujEyduiFoi

.L_start_by8_amivrujEyduiFoi:

        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movq    $0xaa,%r8
        kmovq   %r8,%k2


        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x0,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9


        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x0,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10

.L_main_loop_run_8_amivrujEyduiFoi:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2
        vmovdqu8        112(%rdi),%xmm5
        addq    $0x80,%rdi

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vpsrldq $0xf,%zmm9,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm9,%zmm15
        vpxord  %zmm14,%zmm15,%zmm15
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vpsrldq $0xf,%zmm10,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm10,%zmm16
        vpxord  %zmm14,%zmm16,%zmm16

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi)
        addq    $0x80,%rsi
        subq    $0x80,%rdx
        cmpq    $0x80,%rdx
        jge     .L_main_loop_run_8_amivrujEyduiFoi
        jmp     .L_do_n_blocks_amivrujEyduiFoi

.L_steal_cipher_amivrujEyduiFoi:

        vmovdqa %xmm8,%xmm2


        leaq    vpshufb_shf_table(%rip),%rax
        vmovdqu (%rax,%rdx,1),%xmm10
        vpshufb %xmm10,%xmm8,%xmm8


        vmovdqu -16(%rdi,%rdx,1),%xmm3
        vmovdqu %xmm8,-16(%rsi,%rdx,1)


        leaq    vpshufb_shf_table(%rip),%rax
        addq    $16,%rax
        subq    %rdx,%rax
        vmovdqu (%rax),%xmm10
        vpxor   mask1(%rip),%xmm10,%xmm10
        vpshufb %xmm10,%xmm3,%xmm3

        vpblendvb       %xmm10,%xmm2,%xmm3,%xmm3


        vpxor   %xmm0,%xmm3,%xmm8


        vpxor   (%rcx),%xmm8,%xmm8
        vaesdec 16(%rcx),%xmm8,%xmm8
        vaesdec 32(%rcx),%xmm8,%xmm8
        vaesdec 48(%rcx),%xmm8,%xmm8
        vaesdec 64(%rcx),%xmm8,%xmm8
        vaesdec 80(%rcx),%xmm8,%xmm8
        vaesdec 96(%rcx),%xmm8,%xmm8
        vaesdec 112(%rcx),%xmm8,%xmm8
        vaesdec 128(%rcx),%xmm8,%xmm8
        vaesdec 144(%rcx),%xmm8,%xmm8
        vaesdeclast     160(%rcx),%xmm8,%xmm8

        vpxor   %xmm0,%xmm8,%xmm8

.L_done_amivrujEyduiFoi:

        vmovdqu %xmm8,-16(%rsi)
.L_ret_amivrujEyduiFoi:
        movq    128(%rsp),%rbx
        xorq    %r8,%r8
        movq    %r8,128(%rsp)

        vpxorq  %zmm0,%zmm0,%zmm0
        movq    %rbp,%rsp
        popq    %rbp
        vzeroupper
        .byte   0xf3,0xc3

.L_less_than_128_bytes_amivrujEyduiFoi:
        cmpq    $0x10,%rdx
        jb      .L_ret_amivrujEyduiFoi

        movq    %rdx,%r8
        andq    $0x70,%r8
        cmpq    $0x60,%r8
        je      .L_num_blocks_is_6_amivrujEyduiFoi
        cmpq    $0x50,%r8
        je      .L_num_blocks_is_5_amivrujEyduiFoi
        cmpq    $0x40,%r8
        je      .L_num_blocks_is_4_amivrujEyduiFoi
        cmpq    $0x30,%r8
        je      .L_num_blocks_is_3_amivrujEyduiFoi
        cmpq    $0x20,%r8
        je      .L_num_blocks_is_2_amivrujEyduiFoi
        cmpq    $0x10,%r8
        je      .L_num_blocks_is_1_amivrujEyduiFoi

.L_num_blocks_is_7_amivrujEyduiFoi:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,48(%rsp)
        movq    %rbx,48 + 8(%rsp)
        vmovdqa 48(%rsp),%xmm12
        vmovdqu 48(%rdi),%xmm4
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,64(%rsp)
        movq    %rbx,64 + 8(%rsp)
        vmovdqa 64(%rsp),%xmm13
        vmovdqu 64(%rdi),%xmm5
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,80(%rsp)
        movq    %rbx,80 + 8(%rsp)
        vmovdqa 80(%rsp),%xmm14
        vmovdqu 80(%rdi),%xmm6
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,96(%rsp)
        movq    %rbx,96 + 8(%rsp)
        vmovdqa 96(%rsp),%xmm15
        vmovdqu 96(%rdi),%xmm7
        addq    $0x70,%rdi
        andq    $0xf,%rdx
        je      .L_done_7_amivrujEyduiFoi

.L_steal_cipher_7_amivrujEyduiFoi:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm15,%xmm16
        vmovdqa 16(%rsp),%xmm15
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm15,%xmm7,%xmm7
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vpxor   %xmm0,%xmm6,%xmm6
        vpxor   %xmm0,%xmm7,%xmm7
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vaesdeclast     %xmm0,%xmm6,%xmm6
        vaesdeclast     %xmm0,%xmm7,%xmm7
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm15,%xmm7,%xmm7
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        vmovdqu %xmm5,64(%rsi)
        vmovdqu %xmm6,80(%rsi)
        addq    $0x70,%rsi
        vmovdqa64       %xmm16,%xmm0
        vmovdqa %xmm7,%xmm8
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_7_amivrujEyduiFoi:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm15,%xmm7,%xmm7
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vpxor   %xmm0,%xmm6,%xmm6
        vpxor   %xmm0,%xmm7,%xmm7
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vaesdeclast     %xmm0,%xmm6,%xmm6
        vaesdeclast     %xmm0,%xmm7,%xmm7
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm15,%xmm7,%xmm7
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        vmovdqu %xmm5,64(%rsi)
        vmovdqu %xmm6,80(%rsi)
        addq    $0x70,%rsi
        vmovdqa %xmm7,%xmm8
        jmp     .L_done_amivrujEyduiFoi

.L_num_blocks_is_6_amivrujEyduiFoi:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,48(%rsp)
        movq    %rbx,48 + 8(%rsp)
        vmovdqa 48(%rsp),%xmm12
        vmovdqu 48(%rdi),%xmm4
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,64(%rsp)
        movq    %rbx,64 + 8(%rsp)
        vmovdqa 64(%rsp),%xmm13
        vmovdqu 64(%rdi),%xmm5
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,80(%rsp)
        movq    %rbx,80 + 8(%rsp)
        vmovdqa 80(%rsp),%xmm14
        vmovdqu 80(%rdi),%xmm6
        addq    $0x60,%rdi
        andq    $0xf,%rdx
        je      .L_done_6_amivrujEyduiFoi

.L_steal_cipher_6_amivrujEyduiFoi:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm14,%xmm15
        vmovdqa 16(%rsp),%xmm14
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vpxor   %xmm0,%xmm6,%xmm6
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vaesdeclast     %xmm0,%xmm6,%xmm6
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        vmovdqu %xmm5,64(%rsi)
        addq    $0x60,%rsi
        vmovdqa %xmm15,%xmm0
        vmovdqa %xmm6,%xmm8
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_6_amivrujEyduiFoi:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vpxor   %xmm0,%xmm6,%xmm6
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vaesdeclast     %xmm0,%xmm6,%xmm6
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        vmovdqu %xmm5,64(%rsi)
        addq    $0x60,%rsi
        vmovdqa %xmm6,%xmm8
        jmp     .L_done_amivrujEyduiFoi

.L_num_blocks_is_5_amivrujEyduiFoi:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,48(%rsp)
        movq    %rbx,48 + 8(%rsp)
        vmovdqa 48(%rsp),%xmm12
        vmovdqu 48(%rdi),%xmm4
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,64(%rsp)
        movq    %rbx,64 + 8(%rsp)
        vmovdqa 64(%rsp),%xmm13
        vmovdqu 64(%rdi),%xmm5
        addq    $0x50,%rdi
        andq    $0xf,%rdx
        je      .L_done_5_amivrujEyduiFoi

.L_steal_cipher_5_amivrujEyduiFoi:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm13,%xmm14
        vmovdqa 16(%rsp),%xmm13
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        addq    $0x50,%rsi
        vmovdqa %xmm14,%xmm0
        vmovdqa %xmm5,%xmm8
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_5_amivrujEyduiFoi:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        addq    $0x50,%rsi
        vmovdqa %xmm5,%xmm8
        jmp     .L_done_amivrujEyduiFoi

.L_num_blocks_is_4_amivrujEyduiFoi:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,48(%rsp)
        movq    %rbx,48 + 8(%rsp)
        vmovdqa 48(%rsp),%xmm12
        vmovdqu 48(%rdi),%xmm4
        addq    $0x40,%rdi
        andq    $0xf,%rdx
        je      .L_done_4_amivrujEyduiFoi

.L_steal_cipher_4_amivrujEyduiFoi:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm12,%xmm13
        vmovdqa 16(%rsp),%xmm12
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        addq    $0x40,%rsi
        vmovdqa %xmm13,%xmm0
        vmovdqa %xmm4,%xmm8
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_4_amivrujEyduiFoi:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        addq    $0x40,%rsi
        vmovdqa %xmm4,%xmm8
        jmp     .L_done_amivrujEyduiFoi

.L_num_blocks_is_3_amivrujEyduiFoi:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        addq    $0x30,%rdi
        andq    $0xf,%rdx
        je      .L_done_3_amivrujEyduiFoi

.L_steal_cipher_3_amivrujEyduiFoi:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm11,%xmm12
        vmovdqa 16(%rsp),%xmm11
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        addq    $0x30,%rsi
        vmovdqa %xmm12,%xmm0
        vmovdqa %xmm3,%xmm8
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_3_amivrujEyduiFoi:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        addq    $0x30,%rsi
        vmovdqa %xmm3,%xmm8
        jmp     .L_done_amivrujEyduiFoi

.L_num_blocks_is_2_amivrujEyduiFoi:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        addq    $0x20,%rdi
        andq    $0xf,%rdx
        je      .L_done_2_amivrujEyduiFoi

.L_steal_cipher_2_amivrujEyduiFoi:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm10,%xmm11
        vmovdqa 16(%rsp),%xmm10
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu %xmm1,(%rsi)
        addq    $0x20,%rsi
        vmovdqa %xmm11,%xmm0
        vmovdqa %xmm2,%xmm8
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_2_amivrujEyduiFoi:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu %xmm1,(%rsi)
        addq    $0x20,%rsi
        vmovdqa %xmm2,%xmm8
        jmp     .L_done_amivrujEyduiFoi

.L_num_blocks_is_1_amivrujEyduiFoi:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        addq    $0x10,%rdi
        andq    $0xf,%rdx
        je      .L_done_1_amivrujEyduiFoi

.L_steal_cipher_1_amivrujEyduiFoi:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm9,%xmm10
        vmovdqa 16(%rsp),%xmm9
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        addq    $0x10,%rsi
        vmovdqa %xmm10,%xmm0
        vmovdqa %xmm1,%xmm8
        jmp     .L_steal_cipher_amivrujEyduiFoi

.L_done_1_amivrujEyduiFoi:
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        addq    $0x10,%rsi
        vmovdqa %xmm1,%xmm8
        jmp     .L_done_amivrujEyduiFoi
.cfi_endproc
.globl  aesni_xts_256_encrypt_avx512
.hidden aesni_xts_256_encrypt_avx512
.type   aesni_xts_256_encrypt_avx512,@function
.align  32
aesni_xts_256_encrypt_avx512:
.cfi_startproc
.byte   243,15,30,250
        pushq   %rbp
        movq    %rsp,%rbp
        subq    $136,%rsp
        andq    $0xffffffffffffffc0,%rsp
        movq    %rbx,128(%rsp)
        movq    $0x87,%r10
        vmovdqu (%r9),%xmm1
        vpxor   (%r8),%xmm1,%xmm1
        vaesenc 16(%r8),%xmm1,%xmm1
        vaesenc 32(%r8),%xmm1,%xmm1
        vaesenc 48(%r8),%xmm1,%xmm1
        vaesenc 64(%r8),%xmm1,%xmm1
        vaesenc 80(%r8),%xmm1,%xmm1
        vaesenc 96(%r8),%xmm1,%xmm1
        vaesenc 112(%r8),%xmm1,%xmm1
        vaesenc 128(%r8),%xmm1,%xmm1
        vaesenc 144(%r8),%xmm1,%xmm1
        vaesenc 160(%r8),%xmm1,%xmm1
        vaesenc 176(%r8),%xmm1,%xmm1
        vaesenc 192(%r8),%xmm1,%xmm1
        vaesenc 208(%r8),%xmm1,%xmm1
        vaesenclast     224(%r8),%xmm1,%xmm1
        vmovdqa %xmm1,(%rsp)

        cmpq    $0x80,%rdx
        jl      .L_less_than_128_bytes_wcpqaDvsGlbjGoe
        vpbroadcastq    %r10,%zmm25
        cmpq    $0x100,%rdx
        jge     .L_start_by16_wcpqaDvsGlbjGoe
        cmpq    $0x80,%rdx
        jge     .L_start_by8_wcpqaDvsGlbjGoe

.L_do_n_blocks_wcpqaDvsGlbjGoe:
        cmpq    $0x0,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        cmpq    $0x70,%rdx
        jge     .L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe
        cmpq    $0x60,%rdx
        jge     .L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe
        cmpq    $0x50,%rdx
        jge     .L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe
        cmpq    $0x40,%rdx
        jge     .L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe
        cmpq    $0x30,%rdx
        jge     .L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe
        cmpq    $0x20,%rdx
        jge     .L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe
        cmpq    $0x10,%rdx
        jge     .L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe
        vmovdqa %xmm0,%xmm8
        vmovdqa %xmm9,%xmm0
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe

.L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe:
        movq    $0x0000ffffffffffff,%r8
        kmovq   %r8,%k1
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2{%k1}
        addq    $0x70,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi){%k1}
        addq    $0x70,%rsi
        vextracti32x4   $0x2,%zmm2,%xmm8
        vextracti32x4   $0x3,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe

.L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%ymm2
        addq    $0x60,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %ymm2,64(%rsi)
        addq    $0x60,%rsi
        vextracti32x4   $0x1,%zmm2,%xmm8
        vextracti32x4   $0x2,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe

.L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu 64(%rdi),%xmm2
        addq    $0x50,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu %xmm2,64(%rsi)
        addq    $0x50,%rsi
        vmovdqa %xmm2,%xmm8
        vextracti32x4   $0x1,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe

.L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe:
        vmovdqu8        (%rdi),%zmm1
        addq    $0x40,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vpxorq  %zmm9,%zmm1,%zmm1
        vmovdqu8        %zmm1,(%rsi)
        addq    $0x40,%rsi
        vextracti32x4   $0x3,%zmm1,%xmm8
        vmovdqa64       %xmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe:
        movq    $-1,%r8
        shrq    $0x10,%r8
        kmovq   %r8,%k1
        vmovdqu8        (%rdi),%zmm1{%k1}
        addq    $0x30,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vpxorq  %zmm9,%zmm1,%zmm1
        vmovdqu8        %zmm1,(%rsi){%k1}
        addq    $0x30,%rsi
        vextracti32x4   $0x2,%zmm1,%xmm8
        vextracti32x4   $0x3,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe:
        vmovdqu8        (%rdi),%ymm1
        addq    $0x20,%rdi
        vbroadcasti32x4 (%rcx),%ymm0
        vpternlogq      $0x96,%ymm0,%ymm9,%ymm1
        vbroadcasti32x4 16(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 32(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 48(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 64(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 80(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 96(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 112(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 128(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 144(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 160(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 176(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 192(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 208(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 224(%rcx),%ymm0
        vaesenclast     %ymm0,%ymm1,%ymm1
        vpxorq  %ymm9,%ymm1,%ymm1
        vmovdqu %ymm1,(%rsi)
        addq    $0x20,%rsi
        vextracti32x4   $0x1,%zmm1,%xmm8
        vextracti32x4   $0x2,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe:
        vmovdqu (%rdi),%xmm1
        addq    $0x10,%rdi
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   (%rcx),%xmm1,%xmm1
        vaesenc 16(%rcx),%xmm1,%xmm1
        vaesenc 32(%rcx),%xmm1,%xmm1
        vaesenc 48(%rcx),%xmm1,%xmm1
        vaesenc 64(%rcx),%xmm1,%xmm1
        vaesenc 80(%rcx),%xmm1,%xmm1
        vaesenc 96(%rcx),%xmm1,%xmm1
        vaesenc 112(%rcx),%xmm1,%xmm1
        vaesenc 128(%rcx),%xmm1,%xmm1
        vaesenc 144(%rcx),%xmm1,%xmm1
        vaesenc 160(%rcx),%xmm1,%xmm1
        vaesenc 176(%rcx),%xmm1,%xmm1
        vaesenc 192(%rcx),%xmm1,%xmm1
        vaesenc 208(%rcx),%xmm1,%xmm1
        vaesenclast     224(%rcx),%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu %xmm1,(%rsi)
        addq    $0x10,%rsi
        vmovdqa %xmm1,%xmm8
        vextracti32x4   $0x1,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe


.L_start_by16_wcpqaDvsGlbjGoe:
        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movq    $0xaa,%r8
        kmovq   %r8,%k2
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x0,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x0,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        vpsrldq $0xf,%zmm9,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm9,%zmm11
        vpxord  %zmm14,%zmm11,%zmm11
        vpsrldq $0xf,%zmm10,%zmm15
        vpclmulqdq      $0x0,%zmm25,%zmm15,%zmm16
        vpslldq $0x1,%zmm10,%zmm12
        vpxord  %zmm16,%zmm12,%zmm12

.L_main_loop_run_16_wcpqaDvsGlbjGoe:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2
        vmovdqu8        128(%rdi),%zmm3
        vmovdqu8        192(%rdi),%zmm4
        addq    $0x100,%rdi
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vpxorq  %zmm11,%zmm3,%zmm3
        vpxorq  %zmm12,%zmm4,%zmm4
        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vpxorq  %zmm0,%zmm3,%zmm3
        vpxorq  %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm11,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm11,%zmm15
        vpxord  %zmm14,%zmm15,%zmm15
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm12,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm12,%zmm16
        vpxord  %zmm14,%zmm16,%zmm16
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm15,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm15,%zmm17
        vpxord  %zmm14,%zmm17,%zmm17
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm16,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm16,%zmm18
        vpxord  %zmm14,%zmm18,%zmm18
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vaesenc %zmm0,%zmm3,%zmm3
        vaesenc %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vaesenclast     %zmm0,%zmm3,%zmm3
        vaesenclast     %zmm0,%zmm4,%zmm4
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vpxorq  %zmm11,%zmm3,%zmm3
        vpxorq  %zmm12,%zmm4,%zmm4

        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqa32       %zmm17,%zmm11
        vmovdqa32       %zmm18,%zmm12
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi)
        vmovdqu8        %zmm3,128(%rsi)
        vmovdqu8        %zmm4,192(%rsi)
        addq    $0x100,%rsi
        subq    $0x100,%rdx
        cmpq    $0x100,%rdx
        jae     .L_main_loop_run_16_wcpqaDvsGlbjGoe
        cmpq    $0x80,%rdx
        jae     .L_main_loop_run_8_wcpqaDvsGlbjGoe
        vextracti32x4   $0x3,%zmm4,%xmm0
        jmp     .L_do_n_blocks_wcpqaDvsGlbjGoe

.L_start_by8_wcpqaDvsGlbjGoe:
        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movq    $0xaa,%r8
        kmovq   %r8,%k2
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x0,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x0,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10

.L_main_loop_run_8_wcpqaDvsGlbjGoe:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2
        addq    $0x80,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vpsrldq $0xf,%zmm9,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm9,%zmm15
        vpxord  %zmm14,%zmm15,%zmm15
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2
        vpsrldq $0xf,%zmm10,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm10,%zmm16
        vpxord  %zmm14,%zmm16,%zmm16

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi)
        addq    $0x80,%rsi
        subq    $0x80,%rdx
        cmpq    $0x80,%rdx
        jae     .L_main_loop_run_8_wcpqaDvsGlbjGoe
        vextracti32x4   $0x3,%zmm2,%xmm0
        jmp     .L_do_n_blocks_wcpqaDvsGlbjGoe

.L_steal_cipher_wcpqaDvsGlbjGoe:
        vmovdqa %xmm8,%xmm2
        leaq    vpshufb_shf_table(%rip),%rax
        vmovdqu (%rax,%rdx,1),%xmm10
        vpshufb %xmm10,%xmm8,%xmm8
        vmovdqu -16(%rdi,%rdx,1),%xmm3
        vmovdqu %xmm8,-16(%rsi,%rdx,1)
        leaq    vpshufb_shf_table(%rip),%rax
        addq    $16,%rax
        subq    %rdx,%rax
        vmovdqu (%rax),%xmm10
        vpxor   mask1(%rip),%xmm10,%xmm10
        vpshufb %xmm10,%xmm3,%xmm3
        vpblendvb       %xmm10,%xmm2,%xmm3,%xmm3
        vpxor   %xmm0,%xmm3,%xmm8
        vpxor   (%rcx),%xmm8,%xmm8
        vaesenc 16(%rcx),%xmm8,%xmm8
        vaesenc 32(%rcx),%xmm8,%xmm8
        vaesenc 48(%rcx),%xmm8,%xmm8
        vaesenc 64(%rcx),%xmm8,%xmm8
        vaesenc 80(%rcx),%xmm8,%xmm8
        vaesenc 96(%rcx),%xmm8,%xmm8
        vaesenc 112(%rcx),%xmm8,%xmm8
        vaesenc 128(%rcx),%xmm8,%xmm8
        vaesenc 144(%rcx),%xmm8,%xmm8
        vaesenc 160(%rcx),%xmm8,%xmm8
        vaesenc 176(%rcx),%xmm8,%xmm8
        vaesenc 192(%rcx),%xmm8,%xmm8
        vaesenc 208(%rcx),%xmm8,%xmm8
        vaesenclast     224(%rcx),%xmm8,%xmm8
        vpxor   %xmm0,%xmm8,%xmm8
        vmovdqu %xmm8,-16(%rsi)
.L_ret_wcpqaDvsGlbjGoe:
        movq    128(%rsp),%rbx
        xorq    %r8,%r8
        movq    %r8,128(%rsp)

        vpxorq  %zmm0,%zmm0,%zmm0
        movq    %rbp,%rsp
        popq    %rbp
        vzeroupper
        .byte   0xf3,0xc3

.L_less_than_128_bytes_wcpqaDvsGlbjGoe:
        vpbroadcastq    %r10,%zmm25
        cmpq    $0x10,%rdx
        jb      .L_ret_wcpqaDvsGlbjGoe
        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movl    $0xaa,%r8d
        kmovq   %r8,%k2
        movq    %rdx,%r8
        andq    $0x70,%r8
        cmpq    $0x60,%r8
        je      .L_num_blocks_is_6_wcpqaDvsGlbjGoe
        cmpq    $0x50,%r8
        je      .L_num_blocks_is_5_wcpqaDvsGlbjGoe
        cmpq    $0x40,%r8
        je      .L_num_blocks_is_4_wcpqaDvsGlbjGoe
        cmpq    $0x30,%r8
        je      .L_num_blocks_is_3_wcpqaDvsGlbjGoe
        cmpq    $0x20,%r8
        je      .L_num_blocks_is_2_wcpqaDvsGlbjGoe
        cmpq    $0x10,%r8
        je      .L_num_blocks_is_1_wcpqaDvsGlbjGoe

.L_num_blocks_is_7_wcpqaDvsGlbjGoe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x00,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        movq    $0x0000ffffffffffff,%r8
        kmovq   %r8,%k1
        vmovdqu8        0(%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2{%k1}

        addq    $0x70,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,0(%rsi)
        vmovdqu8        %zmm2,64(%rsi){%k1}
        addq    $0x70,%rsi
        vextracti32x4   $0x2,%zmm2,%xmm8
        vextracti32x4   $0x3,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_num_blocks_is_6_wcpqaDvsGlbjGoe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x00,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        vmovdqu8        0(%rdi),%zmm1
        vmovdqu8        64(%rdi),%ymm2
        addq    $96,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,0(%rsi)
        vmovdqu8        %ymm2,64(%rsi)
        addq    $96,%rsi

        vextracti32x4   $0x1,%ymm2,%xmm8
        vextracti32x4   $0x2,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_num_blocks_is_5_wcpqaDvsGlbjGoe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x00,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        vmovdqu8        0(%rdi),%zmm1
        vmovdqu8        64(%rdi),%xmm2
        addq    $80,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vpternlogq      $0x96,%zmm0,%zmm10,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vaesenc %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vaesenclast     %zmm0,%zmm2,%zmm2
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vmovdqu8        %zmm1,0(%rsi)
        vmovdqu8        %xmm2,64(%rsi)
        addq    $80,%rsi

        vmovdqa %xmm2,%xmm8
        vextracti32x4   $0x1,%zmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_num_blocks_is_4_wcpqaDvsGlbjGoe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x00,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10
        vmovdqu8        0(%rdi),%zmm1
        addq    $64,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vpxorq  %zmm9,%zmm1,%zmm1
        vmovdqu8        %zmm1,0(%rsi)
        addq    $64,%rsi
        vextracti32x4   $0x3,%zmm1,%xmm8
        vmovdqa %xmm10,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_num_blocks_is_3_wcpqaDvsGlbjGoe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9
        movq    $0x0000ffffffffffff,%r8
        kmovq   %r8,%k1
        vmovdqu8        0(%rdi),%zmm1{%k1}
        addq    $48,%rdi
        vbroadcasti32x4 (%rcx),%zmm0
        vpternlogq      $0x96,%zmm0,%zmm9,%zmm1
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 176(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 192(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 208(%rcx),%zmm0
        vaesenc %zmm0,%zmm1,%zmm1
        vbroadcasti32x4 224(%rcx),%zmm0
        vaesenclast     %zmm0,%zmm1,%zmm1
        vpxorq  %zmm9,%zmm1,%zmm1
        vmovdqu8        %zmm1,0(%rsi){%k1}
        addq    $48,%rsi
        vextracti32x4   $2,%zmm1,%xmm8
        vextracti32x4   $3,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_num_blocks_is_2_wcpqaDvsGlbjGoe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9

        vmovdqu8        0(%rdi),%ymm1
        addq    $32,%rdi
        vbroadcasti32x4 (%rcx),%ymm0
        vpternlogq      $0x96,%ymm0,%ymm9,%ymm1
        vbroadcasti32x4 16(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 32(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 48(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 64(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 80(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 96(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 112(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 128(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 144(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 160(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 176(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 192(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 208(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 224(%rcx),%ymm0
        vaesenclast     %ymm0,%ymm1,%ymm1
        vpxorq  %ymm9,%ymm1,%ymm1
        vmovdqu8        %ymm1,0(%rsi)
        addq    $32,%rsi

        vextracti32x4   $1,%ymm1,%xmm8
        vextracti32x4   $2,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.L_num_blocks_is_1_wcpqaDvsGlbjGoe:
        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x00,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9

        vmovdqu8        0(%rdi),%xmm1
        addq    $16,%rdi
        vbroadcasti32x4 (%rcx),%ymm0
        vpternlogq      $0x96,%ymm0,%ymm9,%ymm1
        vbroadcasti32x4 16(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 32(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 48(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 64(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 80(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 96(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 112(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 128(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 144(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 160(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 176(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 192(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 208(%rcx),%ymm0
        vaesenc %ymm0,%ymm1,%ymm1
        vbroadcasti32x4 224(%rcx),%ymm0
        vaesenclast     %ymm0,%ymm1,%ymm1
        vpxorq  %ymm9,%ymm1,%ymm1
        vmovdqu8        %xmm1,0(%rsi)
        addq    $16,%rsi

        vmovdqa %xmm1,%xmm8
        vextracti32x4   $1,%zmm9,%xmm0
        andq    $0xf,%rdx
        je      .L_ret_wcpqaDvsGlbjGoe
        jmp     .L_steal_cipher_wcpqaDvsGlbjGoe
.cfi_endproc
.globl  aesni_xts_256_decrypt_avx512
.hidden aesni_xts_256_decrypt_avx512
.type   aesni_xts_256_decrypt_avx512,@function
.align  32
aesni_xts_256_decrypt_avx512:
.cfi_startproc
.byte   243,15,30,250
        pushq   %rbp
        movq    %rsp,%rbp
        subq    $136,%rsp
        andq    $0xffffffffffffffc0,%rsp
        movq    %rbx,128(%rsp)
        movq    $0x87,%r10
        vmovdqu (%r9),%xmm1
        vpxor   (%r8),%xmm1,%xmm1
        vaesenc 16(%r8),%xmm1,%xmm1
        vaesenc 32(%r8),%xmm1,%xmm1
        vaesenc 48(%r8),%xmm1,%xmm1
        vaesenc 64(%r8),%xmm1,%xmm1
        vaesenc 80(%r8),%xmm1,%xmm1
        vaesenc 96(%r8),%xmm1,%xmm1
        vaesenc 112(%r8),%xmm1,%xmm1
        vaesenc 128(%r8),%xmm1,%xmm1
        vaesenc 144(%r8),%xmm1,%xmm1
        vaesenc 160(%r8),%xmm1,%xmm1
        vaesenc 176(%r8),%xmm1,%xmm1
        vaesenc 192(%r8),%xmm1,%xmm1
        vaesenc 208(%r8),%xmm1,%xmm1
        vaesenclast     224(%r8),%xmm1,%xmm1
        vmovdqa %xmm1,(%rsp)

        cmpq    $0x80,%rdx
        jb      .L_less_than_128_bytes_EmbgEptodyewbFa
        vpbroadcastq    %r10,%zmm25
        cmpq    $0x100,%rdx
        jge     .L_start_by16_EmbgEptodyewbFa
        jmp     .L_start_by8_EmbgEptodyewbFa

.L_do_n_blocks_EmbgEptodyewbFa:
        cmpq    $0x0,%rdx
        je      .L_ret_EmbgEptodyewbFa
        cmpq    $0x70,%rdx
        jge     .L_remaining_num_blocks_is_7_EmbgEptodyewbFa
        cmpq    $0x60,%rdx
        jge     .L_remaining_num_blocks_is_6_EmbgEptodyewbFa
        cmpq    $0x50,%rdx
        jge     .L_remaining_num_blocks_is_5_EmbgEptodyewbFa
        cmpq    $0x40,%rdx
        jge     .L_remaining_num_blocks_is_4_EmbgEptodyewbFa
        cmpq    $0x30,%rdx
        jge     .L_remaining_num_blocks_is_3_EmbgEptodyewbFa
        cmpq    $0x20,%rdx
        jge     .L_remaining_num_blocks_is_2_EmbgEptodyewbFa
        cmpq    $0x10,%rdx
        jge     .L_remaining_num_blocks_is_1_EmbgEptodyewbFa


        vmovdqu %xmm5,%xmm1

        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu %xmm1,-16(%rsi)
        vmovdqa %xmm1,%xmm8


        movq    $0x1,%r8
        kmovq   %r8,%k1
        vpsllq  $0x3f,%xmm9,%xmm13
        vpsraq  $0x3f,%xmm13,%xmm14
        vpandq  %xmm25,%xmm14,%xmm5
        vpxorq  %xmm5,%xmm9,%xmm9{%k1}
        vpsrldq $0x8,%xmm9,%xmm10
.byte   98, 211, 181, 8, 115, 194, 1
        vpslldq $0x8,%xmm13,%xmm13
        vpxorq  %xmm13,%xmm0,%xmm0
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_remaining_num_blocks_is_7_EmbgEptodyewbFa:
        movq    $0xffffffffffffffff,%r8
        shrq    $0x10,%r8
        kmovq   %r8,%k1
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2{%k1}
        addq    $0x70,%rdi
        andq    $0xf,%rdx
        je      .L_done_7_remain_EmbgEptodyewbFa
        vextracti32x4   $0x2,%zmm10,%xmm12
        vextracti32x4   $0x3,%zmm10,%xmm13
        vinserti32x4    $0x2,%xmm13,%zmm10,%zmm10

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi){%k1}
        addq    $0x70,%rsi
        vextracti32x4   $0x2,%zmm2,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_7_remain_EmbgEptodyewbFa:

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi){%k1}
        jmp     .L_ret_EmbgEptodyewbFa

.L_remaining_num_blocks_is_6_EmbgEptodyewbFa:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%ymm2
        addq    $0x60,%rdi
        andq    $0xf,%rdx
        je      .L_done_6_remain_EmbgEptodyewbFa
        vextracti32x4   $0x1,%zmm10,%xmm12
        vextracti32x4   $0x2,%zmm10,%xmm13
        vinserti32x4    $0x1,%xmm13,%zmm10,%zmm10

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %ymm2,64(%rsi)
        addq    $0x60,%rsi
        vextracti32x4   $0x1,%zmm2,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_6_remain_EmbgEptodyewbFa:

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %ymm2,64(%rsi)
        jmp     .L_ret_EmbgEptodyewbFa

.L_remaining_num_blocks_is_5_EmbgEptodyewbFa:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu 64(%rdi),%xmm2
        addq    $0x50,%rdi
        andq    $0xf,%rdx
        je      .L_done_5_remain_EmbgEptodyewbFa
        vmovdqa %xmm10,%xmm12
        vextracti32x4   $0x1,%zmm10,%xmm10

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu %xmm2,64(%rsi)
        addq    $0x50,%rsi
        vmovdqa %xmm2,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_5_remain_EmbgEptodyewbFa:

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %xmm2,64(%rsi)
        jmp     .L_ret_EmbgEptodyewbFa

.L_remaining_num_blocks_is_4_EmbgEptodyewbFa:
        vmovdqu8        (%rdi),%zmm1
        addq    $0x40,%rdi
        andq    $0xf,%rdx
        je      .L_done_4_remain_EmbgEptodyewbFa
        vextracti32x4   $0x3,%zmm9,%xmm12
        vinserti32x4    $0x3,%xmm10,%zmm9,%zmm9

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        addq    $0x40,%rsi
        vextracti32x4   $0x3,%zmm1,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_4_remain_EmbgEptodyewbFa:

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        jmp     .L_ret_EmbgEptodyewbFa

.L_remaining_num_blocks_is_3_EmbgEptodyewbFa:
        vmovdqu (%rdi),%xmm1
        vmovdqu 16(%rdi),%xmm2
        vmovdqu 32(%rdi),%xmm3
        addq    $0x30,%rdi
        andq    $0xf,%rdx
        je      .L_done_3_remain_EmbgEptodyewbFa
        vextracti32x4   $0x2,%zmm9,%xmm13
        vextracti32x4   $0x1,%zmm9,%xmm10
        vextracti32x4   $0x3,%zmm9,%xmm11
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        addq    $0x30,%rsi
        vmovdqa %xmm3,%xmm8
        vmovdqa %xmm13,%xmm0
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_3_remain_EmbgEptodyewbFa:
        vextracti32x4   $0x1,%zmm9,%xmm10
        vextracti32x4   $0x2,%zmm9,%xmm11
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        jmp     .L_ret_EmbgEptodyewbFa

.L_remaining_num_blocks_is_2_EmbgEptodyewbFa:
        vmovdqu (%rdi),%xmm1
        vmovdqu 16(%rdi),%xmm2
        addq    $0x20,%rdi
        andq    $0xf,%rdx
        je      .L_done_2_remain_EmbgEptodyewbFa
        vextracti32x4   $0x2,%zmm9,%xmm10
        vextracti32x4   $0x1,%zmm9,%xmm12
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        addq    $0x20,%rsi
        vmovdqa %xmm2,%xmm8
        vmovdqa %xmm12,%xmm0
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_2_remain_EmbgEptodyewbFa:
        vextracti32x4   $0x1,%zmm9,%xmm10
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        jmp     .L_ret_EmbgEptodyewbFa

.L_remaining_num_blocks_is_1_EmbgEptodyewbFa:
        vmovdqu (%rdi),%xmm1
        addq    $0x10,%rdi
        andq    $0xf,%rdx
        je      .L_done_1_remain_EmbgEptodyewbFa
        vextracti32x4   $0x1,%zmm9,%xmm11
        vpxor   %xmm11,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm11,%xmm1,%xmm1
        vmovdqu %xmm1,(%rsi)
        addq    $0x10,%rsi
        vmovdqa %xmm1,%xmm8
        vmovdqa %xmm9,%xmm0
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_1_remain_EmbgEptodyewbFa:
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu %xmm1,(%rsi)
        jmp     .L_ret_EmbgEptodyewbFa

.L_start_by16_EmbgEptodyewbFa:
        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movq    $0xaa,%r8
        kmovq   %r8,%k2


        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x0,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9


        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x0,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10


        vpsrldq $0xf,%zmm9,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm9,%zmm11
        vpxord  %zmm14,%zmm11,%zmm11

        vpsrldq $0xf,%zmm10,%zmm15
        vpclmulqdq      $0x0,%zmm25,%zmm15,%zmm16
        vpslldq $0x1,%zmm10,%zmm12
        vpxord  %zmm16,%zmm12,%zmm12

.L_main_loop_run_16_EmbgEptodyewbFa:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2
        vmovdqu8        128(%rdi),%zmm3
        vmovdqu8        192(%rdi),%zmm4
        vmovdqu8        240(%rdi),%xmm5
        addq    $0x100,%rdi
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vpxorq  %zmm11,%zmm3,%zmm3
        vpxorq  %zmm12,%zmm4,%zmm4
        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vpxorq  %zmm0,%zmm3,%zmm3
        vpxorq  %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm11,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm11,%zmm15
        vpxord  %zmm14,%zmm15,%zmm15
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm12,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm12,%zmm16
        vpxord  %zmm14,%zmm16,%zmm16
        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm15,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm15,%zmm17
        vpxord  %zmm14,%zmm17,%zmm17
        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vpsrldq $0xf,%zmm16,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm16,%zmm18
        vpxord  %zmm14,%zmm18,%zmm18
        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vaesdec %zmm0,%zmm3,%zmm3
        vaesdec %zmm0,%zmm4,%zmm4
        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2
        vaesdeclast     %zmm0,%zmm3,%zmm3
        vaesdeclast     %zmm0,%zmm4,%zmm4
        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2
        vpxorq  %zmm11,%zmm3,%zmm3
        vpxorq  %zmm12,%zmm4,%zmm4

        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqa32       %zmm17,%zmm11
        vmovdqa32       %zmm18,%zmm12
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi)
        vmovdqu8        %zmm3,128(%rsi)
        vmovdqu8        %zmm4,192(%rsi)
        addq    $0x100,%rsi
        subq    $0x100,%rdx
        cmpq    $0x100,%rdx
        jge     .L_main_loop_run_16_EmbgEptodyewbFa

        cmpq    $0x80,%rdx
        jge     .L_main_loop_run_8_EmbgEptodyewbFa
        jmp     .L_do_n_blocks_EmbgEptodyewbFa

.L_start_by8_EmbgEptodyewbFa:

        vbroadcasti32x4 (%rsp),%zmm0
        vbroadcasti32x4 shufb_15_7(%rip),%zmm8
        movq    $0xaa,%r8
        kmovq   %r8,%k2


        vpshufb %zmm8,%zmm0,%zmm1
        vpsllvq const_dq3210(%rip),%zmm0,%zmm4
        vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
        vpclmulqdq      $0x0,%zmm25,%zmm2,%zmm3
        vpxorq  %zmm2,%zmm4,%zmm4{%k2}
        vpxord  %zmm4,%zmm3,%zmm9


        vpsllvq const_dq7654(%rip),%zmm0,%zmm5
        vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
        vpclmulqdq      $0x0,%zmm25,%zmm6,%zmm7
        vpxorq  %zmm6,%zmm5,%zmm5{%k2}
        vpxord  %zmm5,%zmm7,%zmm10

.L_main_loop_run_8_EmbgEptodyewbFa:
        vmovdqu8        (%rdi),%zmm1
        vmovdqu8        64(%rdi),%zmm2
        vmovdqu8        112(%rdi),%xmm5
        addq    $0x80,%rdi

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vbroadcasti32x4 (%rcx),%zmm0
        vpxorq  %zmm0,%zmm1,%zmm1
        vpxorq  %zmm0,%zmm2,%zmm2
        vpsrldq $0xf,%zmm9,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm9,%zmm15
        vpxord  %zmm14,%zmm15,%zmm15
        vbroadcasti32x4 16(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 32(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 48(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2
        vpsrldq $0xf,%zmm10,%zmm13
        vpclmulqdq      $0x0,%zmm25,%zmm13,%zmm14
        vpslldq $0x1,%zmm10,%zmm16
        vpxord  %zmm14,%zmm16,%zmm16

        vbroadcasti32x4 64(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 80(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 96(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 112(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 128(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 144(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 160(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 176(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 192(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 208(%rcx),%zmm0
        vaesdec %zmm0,%zmm1,%zmm1
        vaesdec %zmm0,%zmm2,%zmm2


        vbroadcasti32x4 224(%rcx),%zmm0
        vaesdeclast     %zmm0,%zmm1,%zmm1
        vaesdeclast     %zmm0,%zmm2,%zmm2

        vpxorq  %zmm9,%zmm1,%zmm1
        vpxorq  %zmm10,%zmm2,%zmm2


        vmovdqa32       %zmm15,%zmm9
        vmovdqa32       %zmm16,%zmm10
        vmovdqu8        %zmm1,(%rsi)
        vmovdqu8        %zmm2,64(%rsi)
        addq    $0x80,%rsi
        subq    $0x80,%rdx
        cmpq    $0x80,%rdx
        jge     .L_main_loop_run_8_EmbgEptodyewbFa
        jmp     .L_do_n_blocks_EmbgEptodyewbFa

.L_steal_cipher_EmbgEptodyewbFa:

        vmovdqa %xmm8,%xmm2


        leaq    vpshufb_shf_table(%rip),%rax
        vmovdqu (%rax,%rdx,1),%xmm10
        vpshufb %xmm10,%xmm8,%xmm8


        vmovdqu -16(%rdi,%rdx,1),%xmm3
        vmovdqu %xmm8,-16(%rsi,%rdx,1)


        leaq    vpshufb_shf_table(%rip),%rax
        addq    $16,%rax
        subq    %rdx,%rax
        vmovdqu (%rax),%xmm10
        vpxor   mask1(%rip),%xmm10,%xmm10
        vpshufb %xmm10,%xmm3,%xmm3

        vpblendvb       %xmm10,%xmm2,%xmm3,%xmm3


        vpxor   %xmm0,%xmm3,%xmm8


        vpxor   (%rcx),%xmm8,%xmm8
        vaesdec 16(%rcx),%xmm8,%xmm8
        vaesdec 32(%rcx),%xmm8,%xmm8
        vaesdec 48(%rcx),%xmm8,%xmm8
        vaesdec 64(%rcx),%xmm8,%xmm8
        vaesdec 80(%rcx),%xmm8,%xmm8
        vaesdec 96(%rcx),%xmm8,%xmm8
        vaesdec 112(%rcx),%xmm8,%xmm8
        vaesdec 128(%rcx),%xmm8,%xmm8
        vaesdec 144(%rcx),%xmm8,%xmm8
        vaesdec 160(%rcx),%xmm8,%xmm8
        vaesdec 176(%rcx),%xmm8,%xmm8
        vaesdec 192(%rcx),%xmm8,%xmm8
        vaesdec 208(%rcx),%xmm8,%xmm8
        vaesdeclast     224(%rcx),%xmm8,%xmm8

        vpxor   %xmm0,%xmm8,%xmm8

.L_done_EmbgEptodyewbFa:

        vmovdqu %xmm8,-16(%rsi)
.L_ret_EmbgEptodyewbFa:
        movq    128(%rsp),%rbx
        xorq    %r8,%r8
        movq    %r8,128(%rsp)

        vpxorq  %zmm0,%zmm0,%zmm0
        movq    %rbp,%rsp
        popq    %rbp
        vzeroupper
        .byte   0xf3,0xc3

.L_less_than_128_bytes_EmbgEptodyewbFa:
        cmpq    $0x10,%rdx
        jb      .L_ret_EmbgEptodyewbFa

        movq    %rdx,%r8
        andq    $0x70,%r8
        cmpq    $0x60,%r8
        je      .L_num_blocks_is_6_EmbgEptodyewbFa
        cmpq    $0x50,%r8
        je      .L_num_blocks_is_5_EmbgEptodyewbFa
        cmpq    $0x40,%r8
        je      .L_num_blocks_is_4_EmbgEptodyewbFa
        cmpq    $0x30,%r8
        je      .L_num_blocks_is_3_EmbgEptodyewbFa
        cmpq    $0x20,%r8
        je      .L_num_blocks_is_2_EmbgEptodyewbFa
        cmpq    $0x10,%r8
        je      .L_num_blocks_is_1_EmbgEptodyewbFa

.L_num_blocks_is_7_EmbgEptodyewbFa:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,48(%rsp)
        movq    %rbx,48 + 8(%rsp)
        vmovdqa 48(%rsp),%xmm12
        vmovdqu 48(%rdi),%xmm4
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,64(%rsp)
        movq    %rbx,64 + 8(%rsp)
        vmovdqa 64(%rsp),%xmm13
        vmovdqu 64(%rdi),%xmm5
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,80(%rsp)
        movq    %rbx,80 + 8(%rsp)
        vmovdqa 80(%rsp),%xmm14
        vmovdqu 80(%rdi),%xmm6
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,96(%rsp)
        movq    %rbx,96 + 8(%rsp)
        vmovdqa 96(%rsp),%xmm15
        vmovdqu 96(%rdi),%xmm7
        addq    $0x70,%rdi
        andq    $0xf,%rdx
        je      .L_done_7_EmbgEptodyewbFa

.L_steal_cipher_7_EmbgEptodyewbFa:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm15,%xmm16
        vmovdqa 16(%rsp),%xmm15
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm15,%xmm7,%xmm7
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vpxor   %xmm0,%xmm6,%xmm6
        vpxor   %xmm0,%xmm7,%xmm7
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vaesdeclast     %xmm0,%xmm6,%xmm6
        vaesdeclast     %xmm0,%xmm7,%xmm7
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm15,%xmm7,%xmm7
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        vmovdqu %xmm5,64(%rsi)
        vmovdqu %xmm6,80(%rsi)
        addq    $0x70,%rsi
        vmovdqa64       %xmm16,%xmm0
        vmovdqa %xmm7,%xmm8
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_7_EmbgEptodyewbFa:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm15,%xmm7,%xmm7
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vpxor   %xmm0,%xmm6,%xmm6
        vpxor   %xmm0,%xmm7,%xmm7
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vaesdec %xmm0,%xmm7,%xmm7
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vaesdeclast     %xmm0,%xmm6,%xmm6
        vaesdeclast     %xmm0,%xmm7,%xmm7
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm15,%xmm7,%xmm7
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        vmovdqu %xmm5,64(%rsi)
        vmovdqu %xmm6,80(%rsi)
        addq    $0x70,%rsi
        vmovdqa %xmm7,%xmm8
        jmp     .L_done_EmbgEptodyewbFa

.L_num_blocks_is_6_EmbgEptodyewbFa:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,48(%rsp)
        movq    %rbx,48 + 8(%rsp)
        vmovdqa 48(%rsp),%xmm12
        vmovdqu 48(%rdi),%xmm4
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,64(%rsp)
        movq    %rbx,64 + 8(%rsp)
        vmovdqa 64(%rsp),%xmm13
        vmovdqu 64(%rdi),%xmm5
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,80(%rsp)
        movq    %rbx,80 + 8(%rsp)
        vmovdqa 80(%rsp),%xmm14
        vmovdqu 80(%rdi),%xmm6
        addq    $0x60,%rdi
        andq    $0xf,%rdx
        je      .L_done_6_EmbgEptodyewbFa

.L_steal_cipher_6_EmbgEptodyewbFa:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm14,%xmm15
        vmovdqa 16(%rsp),%xmm14
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vpxor   %xmm0,%xmm6,%xmm6
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vaesdeclast     %xmm0,%xmm6,%xmm6
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        vmovdqu %xmm5,64(%rsi)
        addq    $0x60,%rsi
        vmovdqa %xmm15,%xmm0
        vmovdqa %xmm6,%xmm8
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_6_EmbgEptodyewbFa:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vpxor   %xmm0,%xmm6,%xmm6
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vaesdec %xmm0,%xmm6,%xmm6
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vaesdeclast     %xmm0,%xmm6,%xmm6
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vpxor   %xmm14,%xmm6,%xmm6
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        vmovdqu %xmm5,64(%rsi)
        addq    $0x60,%rsi
        vmovdqa %xmm6,%xmm8
        jmp     .L_done_EmbgEptodyewbFa

.L_num_blocks_is_5_EmbgEptodyewbFa:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,48(%rsp)
        movq    %rbx,48 + 8(%rsp)
        vmovdqa 48(%rsp),%xmm12
        vmovdqu 48(%rdi),%xmm4
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,64(%rsp)
        movq    %rbx,64 + 8(%rsp)
        vmovdqa 64(%rsp),%xmm13
        vmovdqu 64(%rdi),%xmm5
        addq    $0x50,%rdi
        andq    $0xf,%rdx
        je      .L_done_5_EmbgEptodyewbFa

.L_steal_cipher_5_EmbgEptodyewbFa:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm13,%xmm14
        vmovdqa 16(%rsp),%xmm13
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        addq    $0x50,%rsi
        vmovdqa %xmm14,%xmm0
        vmovdqa %xmm5,%xmm8
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_5_EmbgEptodyewbFa:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vpxor   %xmm0,%xmm5,%xmm5
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vaesdec %xmm0,%xmm5,%xmm5
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vaesdeclast     %xmm0,%xmm5,%xmm5
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vpxor   %xmm13,%xmm5,%xmm5
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        vmovdqu %xmm4,48(%rsi)
        addq    $0x50,%rsi
        vmovdqa %xmm5,%xmm8
        jmp     .L_done_EmbgEptodyewbFa

.L_num_blocks_is_4_EmbgEptodyewbFa:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,48(%rsp)
        movq    %rbx,48 + 8(%rsp)
        vmovdqa 48(%rsp),%xmm12
        vmovdqu 48(%rdi),%xmm4
        addq    $0x40,%rdi
        andq    $0xf,%rdx
        je      .L_done_4_EmbgEptodyewbFa

.L_steal_cipher_4_EmbgEptodyewbFa:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm12,%xmm13
        vmovdqa 16(%rsp),%xmm12
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        addq    $0x40,%rsi
        vmovdqa %xmm13,%xmm0
        vmovdqa %xmm4,%xmm8
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_4_EmbgEptodyewbFa:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vpxor   %xmm0,%xmm4,%xmm4
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vaesdec %xmm0,%xmm4,%xmm4
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vaesdeclast     %xmm0,%xmm4,%xmm4
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vpxor   %xmm12,%xmm4,%xmm4
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        vmovdqu %xmm3,32(%rsi)
        addq    $0x40,%rsi
        vmovdqa %xmm4,%xmm8
        jmp     .L_done_EmbgEptodyewbFa

.L_num_blocks_is_3_EmbgEptodyewbFa:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,32(%rsp)
        movq    %rbx,32 + 8(%rsp)
        vmovdqa 32(%rsp),%xmm11
        vmovdqu 32(%rdi),%xmm3
        addq    $0x30,%rdi
        andq    $0xf,%rdx
        je      .L_done_3_EmbgEptodyewbFa

.L_steal_cipher_3_EmbgEptodyewbFa:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm11,%xmm12
        vmovdqa 16(%rsp),%xmm11
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        addq    $0x30,%rsi
        vmovdqa %xmm12,%xmm0
        vmovdqa %xmm3,%xmm8
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_3_EmbgEptodyewbFa:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vaesdec %xmm0,%xmm3,%xmm3
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vaesdeclast     %xmm0,%xmm3,%xmm3
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vpxor   %xmm11,%xmm3,%xmm3
        vmovdqu %xmm1,(%rsi)
        vmovdqu %xmm2,16(%rsi)
        addq    $0x30,%rsi
        vmovdqa %xmm3,%xmm8
        jmp     .L_done_EmbgEptodyewbFa

.L_num_blocks_is_2_EmbgEptodyewbFa:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,16 + 8(%rsp)
        vmovdqa 16(%rsp),%xmm10
        vmovdqu 16(%rdi),%xmm2
        addq    $0x20,%rdi
        andq    $0xf,%rdx
        je      .L_done_2_EmbgEptodyewbFa

.L_steal_cipher_2_EmbgEptodyewbFa:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm10,%xmm11
        vmovdqa 16(%rsp),%xmm10
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu %xmm1,(%rsi)
        addq    $0x20,%rsi
        vmovdqa %xmm11,%xmm0
        vmovdqa %xmm2,%xmm8
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_2_EmbgEptodyewbFa:
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vpxor   %xmm0,%xmm2,%xmm2
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vaesdec %xmm0,%xmm2,%xmm2
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vaesdeclast     %xmm0,%xmm2,%xmm2
        vpxor   %xmm9,%xmm1,%xmm1
        vpxor   %xmm10,%xmm2,%xmm2
        vmovdqu %xmm1,(%rsi)
        addq    $0x20,%rsi
        vmovdqa %xmm2,%xmm8
        jmp     .L_done_EmbgEptodyewbFa

.L_num_blocks_is_1_EmbgEptodyewbFa:
        vmovdqa 0(%rsp),%xmm9
        movq    0(%rsp),%rax
        movq    8(%rsp),%rbx
        vmovdqu 0(%rdi),%xmm1
        addq    $0x10,%rdi
        andq    $0xf,%rdx
        je      .L_done_1_EmbgEptodyewbFa

.L_steal_cipher_1_EmbgEptodyewbFa:
        xorq    %r11,%r11
        shlq    $1,%rax
        adcq    %rbx,%rbx
        cmovcq  %r10,%r11
        xorq    %r11,%rax
        movq    %rax,16(%rsp)
        movq    %rbx,24(%rsp)
        vmovdqa64       %xmm9,%xmm10
        vmovdqa 16(%rsp),%xmm9
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        addq    $0x10,%rsi
        vmovdqa %xmm10,%xmm0
        vmovdqa %xmm1,%xmm8
        jmp     .L_steal_cipher_EmbgEptodyewbFa

.L_done_1_EmbgEptodyewbFa:
        vpxor   %xmm9,%xmm1,%xmm1
        vmovdqu (%rcx),%xmm0
        vpxor   %xmm0,%xmm1,%xmm1
        vmovdqu 16(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 32(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 48(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 64(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 80(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 96(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 112(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 128(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 144(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 160(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 176(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 192(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 208(%rcx),%xmm0
        vaesdec %xmm0,%xmm1,%xmm1
        vmovdqu 224(%rcx),%xmm0
        vaesdeclast     %xmm0,%xmm1,%xmm1
        vpxor   %xmm9,%xmm1,%xmm1
        addq    $0x10,%rsi
        vmovdqa %xmm1,%xmm8
        jmp     .L_done_EmbgEptodyewbFa
.cfi_endproc
.section        .rodata
.align  16

vpshufb_shf_table:
.quad   0x8786858483828100, 0x8f8e8d8c8b8a8988
.quad   0x0706050403020100, 0x000e0d0c0b0a0908

mask1:
.quad   0x8080808080808080, 0x8080808080808080

const_dq3210:
.quad   0, 0, 1, 1, 2, 2, 3, 3
const_dq5678:
.quad   8, 8, 7, 7, 6, 6, 5, 5
const_dq7654:
.quad   4, 4, 5, 5, 6, 6, 7, 7
const_dq1234:
.quad   4, 4, 3, 3, 2, 2, 1, 1

shufb_15_7:
.byte   15, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7, 0xff, 0xff
.byte   0xff, 0xff, 0xff, 0xff, 0xff

.text
        .section ".note.gnu.property", "a"
        .p2align 3
        .long 1f - 0f
        .long 4f - 1f
        .long 5
0:
        # "GNU" encoded with .byte, since .asciz isn't supported
        # on Solaris.
        .byte 0x47
        .byte 0x4e
        .byte 0x55
        .byte 0
1:
        .p2align 3
        .long 0xc0000002
        .long 3f - 2f
2:
        .long 3
3:
        .p2align 3
4:
